package co.inventario.modelo.fachada;


import java.sql.SQLException;
import java.util.ArrayList;

import co.inventario.entidad.EmpleadoDTO;
import co.inventario.modelo.negocio.EmpleadoNegocio;
import co.inventario.transversal.DAOFactorySQLServer;
public class EmpleadoFachada {
	
	public void crear(EmpleadoDTO empleadoDTO) throws Exception, SQLException {
		DAOFactorySQLServer daoFactorySQLServer = new DAOFactorySQLServer();
		EmpleadoNegocio empleadoNegocio = new EmpleadoNegocio();
		try {
			empleadoNegocio.crear(empleadoDTO, daoFactorySQLServer.obtenerConexion());
			daoFactorySQLServer.confirmarTransaccion();
		} catch (SQLException exception) {
			daoFactorySQLServer.cancelarTransaccion();
			throw new Exception("Se ha presentado un problema intentando crear el Empleado.");
		} catch (Exception exception) {
			daoFactorySQLServer.cancelarTransaccion();
			throw exception;
		} finally {
			daoFactorySQLServer.cerrarConexion();
		}
	}

	public void actualizar(EmpleadoDTO empleadoDTO) throws Exception, SQLException {
		DAOFactorySQLServer daoFactorySQLServer = new DAOFactorySQLServer();
		EmpleadoNegocio empleadoNegocio = new EmpleadoNegocio();
		try {
			empleadoNegocio.actualizar(empleadoDTO, daoFactorySQLServer.obtenerConexion());
			daoFactorySQLServer.confirmarTransaccion();
		} catch (SQLException exception) {
			daoFactorySQLServer.cancelarTransaccion();
			throw new Exception("Se ha presentado intentando actualizar el empleado.");
		} catch (Exception exception) {
			throw exception;
		} finally {
			daoFactorySQLServer.cerrarConexion();
		}
	}

	public ArrayList<EmpleadoDTO> consultarTodo() throws Exception, SQLException {
		DAOFactorySQLServer daoFactorySQLServer = new DAOFactorySQLServer();
		EmpleadoNegocio empleadoNegocio = new EmpleadoNegocio();
		ArrayList<EmpleadoDTO> empleadoDTOLista = null;
		try {
			empleadoDTOLista = empleadoNegocio.consultarTodo(daoFactorySQLServer.obtenerConexion());
		} catch (SQLException exception) {
			daoFactorySQLServer.cancelarTransaccion();
			throw new Exception("Se ha presentado intentando consultar los empleados.");
		} catch (Exception exception) {
			throw exception;
		} finally {
			daoFactorySQLServer.cerrarConexion();
		}
		return empleadoDTOLista;
	}
	
	
	
}
